/**
 * Copyright &copy; 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.sdkj.dspservice.common.base.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.sdkj.dspservice.common.utils.StringUtils;
import com.sdkj.dspservice.modules.sys.entity.User;
import lombok.Data;

import java.io.Serializable;
import java.util.Map;

/**
 * Entity支持类
 * @author ThinkGem
 * @version 2014-05-16
 */
@Data
public abstract class BaseEntity<T> implements Serializable {

	/**
	 * 删除标记（0：正常；1：删除；2：审核；）
	 */
	public static final String DELETE_FLAG_NORMAL = "0";
	public static final String DELETE_FLAG_DELETE = "1";
	public static final String DELETE_FLAG_AUDIT = "2";

	/**
	 * 实体编号（唯一标识）
	 */
	@TableId(type = IdType.INPUT)
	protected String id;
	
	/**
	 * 当前用户
	 */
	@TableField(exist = false)
	protected User currentUser;

	/**
	 * 当前实体分页参数
	 */
	@TableField(exist = false)
	public Integer current;
    @TableField(exist = false)
	public Integer pageSize;
	
	/**
	 * 自定义SQL（SQL标识，SQL内容）
	 */
    @TableField(exist = false)
	protected Map<String, String> sqlMap;
	
	/**
	 * 是否是新记录（默认：false），调用setIsNewRecord()设置新记录，使用自定义ID。
	 * 设置为true后强制执行插入语句，ID不会自动生成，需从手动传入。
	 */
    @TableField(exist = false)
	protected Boolean newRecord = false;

	public BaseEntity() {
		
	}
	
	public BaseEntity(String id) {
		this();
		this.id = id;
	}
	
    /**
	 * 是否是新记录（默认：false），调用setIsNewRecord()设置新记录，使用自定义ID。
	 * 设置为true后强制执行插入语句，ID不会自动生成，需从手动传入。
     * @return
     */
	public boolean isNewRecord() {
        return newRecord || StringUtils.isBlank(getId());
    }

}
